<?php

require_once("MatProfPer_Collection.php");
require_once("MateriasPensumCollection.php");
require_once("PeriodosCollection.php");
require_once("Curso.php");
require_once("AniosCollection.php");
require_once("ProfesorCollection.php");

//Utiliza el patron Singleton
class MateriasFachada {

    private static $instance;

    private function __construct() {
        
    }

    public static function getInstance() { //metodo Singleton
        if (!isset(self::$instance)) {
            $c = __CLASS__;
            self::$instance = new $c;
        }
        return self::$instance;
    }

    public function verMateriasCursadas($username) {
        $materiasCursadasCollection = new MatProfPer_Collection($username);
        $materiasCursadasArray = $materiasCursadasCollection->obtenerMateriasArray();
        return($materiasCursadasArray);
    }

    public function obtenerMateriasPensum() {
        $materiasPensum = new MateriasPensumCollection();
        return $materiasPensum->obtenerMateriasPensumArray();
    }

    public function obtenerPeriodosValidos($user, $materia) {
        $periodosCollection = new PeriodosCollection();
        return $periodosCollection->obtenerPeriodosValidos($user, $materia);
    }

    public function agregarMateria($user, $materia, $mesIni, $mesFin, $anio, $profesorID, $nombreP, $apellidoP, $calificacion = NULL) {
        $curso = new Curso();
        $curso->setEstudiante($user);
        $curso->setMateria($materia);
        $curso->setMesIni($mesIni);
        $curso->setMesFin($mesFin);
        $curso->setAnio($anio);
        $curso->setProfesorID($profesorID);
        $curso->setProfesorNombre($nombreP);
        $curso->setProfesorApellido($apellidoP);
        $curso->setCalificacion($calificacion);
        $result = $curso->save();
        return $result;
    }

    public function editarMateriaCursada($user, $codigo, $mesInicial, $mesFinal, $anio, $nombreProfesor, $apellidoProfesor, $calificacion) {

        $materiasCursadasCollection = new MatProfPer_Collection($user);
        $confirmacion = $materiasCursadasCollection->editarMateriaCursada($user, $codigo, $mesInicial, $mesFinal, $anio, $nombreProfesor, $apellidoProfesor, $calificacion);
        return $confirmacion;
    }

    public function eliminarMateria($user, $codigo, $mesInicial, $mesFinal, $anio) {
        $materiasCursadasCollection = new MatProfPer_Collection($user);
        $confirmacion = $materiasCursadasCollection->eliminarMateriaCursada($user, $codigo, $mesInicial, $mesFinal, $anio);
        return $confirmacion;
    }

    public function obtenerAniosValidos() {
        $aniosCollection = new AniosCollection();
        return $aniosCollection->obtenerAniosValidos();
    }

    public function buscarProfesor($nombre, $apellido) {
        $profesorCollection = new ProfesorCollection($nombre, $apellido);
        return $profesorCollection->obtenerProfesores();
    }

}

?>
